1. Field of the Disclosure
The present disclosure relates to data processing devices and more particularly to virtual machines in data processing devices.
2. Description of the Related Art
Virtualization has been used in data processing devices for a variety of different purposes. Generally, virtualization of a data processing device may include providing one or more privileged programs with access to a virtual machine over which the privileged program has full control, but the control of the physical device is retained by a virtual machine manager (VMM). The privileged program, referred to herein as a guest, provides commands and other information targeted to hardware expected by the guest. The VMM intercepts the commands, and assigns hardware of the data processing device to execute each intercepted command. Virtualization may be implemented in software (e.g. the VMM mentioned above) without any specific hardware virtualization support in the physical machine on which the VMM and its virtual machines execute. In other embodiments, the hardware of the data processing device can provide support for virtualization.
Both the VMM and the guests are executed by one or more processors included in the physical data processing device. Accordingly, switching between execution of the VMM and the execution of guests occurs in the processors over time. For example, the VMM can schedule a guest for execution, and in response the hardware executes the guest VM. At various points in time, a switch from executing a guest to executing the VMM also occurs so that the VMM can retain control over the physical machine (e.g., when the guest attempts to access a peripheral device, when a new page of memory is to be allocated to the guest, when it is time for the VMM to schedule another guest, etc.). A switch between a guest and the VMM (in either direction) is referred to for purposes of discussion as a “world switch.” Generally, the world switch involves saving processor state for the guest/VMM being switched away from, and restoring processor state for the guest/VMM being switched to.